Перейти к основному содержимому

3.07. Типы данных в SQL

Разработчику Аналитику Тестировщику
Архитектору Инженеру

Типы данных в SQL

Типы данных определяют, какая информация может храниться в столбце таблицы: числа, текст, даты и т.д. Каждая СУБД поддерживает свои типы, но есть общая классификация.


1. Числовые типы

Числовые типы – используются для хранения чисел.

Целые числа:

ТипДиапазонПример использования
INT, INTEGERОт -2³¹ до 2³¹-1 (~±2.1 млрд)Возраст (age INT)
SMALLINTОт -32,768 до 32,767Количество товаров на складе
BIGINTОт -2⁶³ до 2⁶³-1 (огромные числа)ID в крупных системах
TINYINTОт -128 до 127 (или 0 до 255)Логический флаг (is_active TINYINT(1))

Числа с плавающей точкой:

ТипОписаниеПример использования
FLOATПриблизительное число (~7 знаков)Температура
DOUBLEБолее точное число (~15 знаков)Координаты на карте
DECIMAL(p, s)Точное число (p — всего цифр, s — после запятой)Деньги (DECIMAL(10, 2))

2. Строковые типы

Строковые типы – для хранения текстов и бинарных данных.

Текстовые типы:

ТипОписаниеПример использования
VARCHAR(n)Строка переменной длины (до n символов)Имя (VARCHAR(50))
CHAR(n)Строка фиксированной длины (дополняется пробелами)Код страны (CHAR(2))
TEXTБольшой текст (до 65,535 символов)Описание товара
LONGTEXTОчень большой текст (до 4 ГБ)Статьи, книги

Бинарные данные:

ТипОписание
BLOBДо 65 КБ бинарных данных (изображения, PDF)
LONGBLOBДо 4 ГБ бинарных данных

3. Дата и время

★ Дата и время – для хранения временных меток.

ТипФорматПример использования
DATE YYYY-MM-DD Дата рождения
TIME HH:MM:SS Время события
DATETIME YYYY-MM-DD HH:MM:SS Дата и время заказа
TIMESTAMP YYYY-MM-DD HH:MM:SS (с учётом часового пояса) Время последнего входа

4. Логический тип

★ Логический тип всегда один:

BOOLEAN – TRUE или FALSE (истина или ложь).


5. Особые типы

★ Особые типы:

JSON – хранение данных в JSON поддерживается в некоторых СУБД (MySQL, PostgreSQL):

CREATE TABLE products (
attributes JSON -- Например, {"color": "red", "size": "XL"}
);

ENUM – столбец с предопределёнными значениями (из списка имеющихся):

CREATE TABLE users (
gender ENUM('male', 'female')
);

Соответственно, в зависимости от планируемого содержания, нужно изначально выбрать тип данных для каждого столбца:

  • числа – INT;
  • деньги – DECIMAL;
  • проценты – FLOAT;
  • текст фиксированной длины – CHAR;
  • переменная длина (имена, описания) – VARCHAR;
  • большие тексты – TEXT;
  • дата – DATE;
  • дата и время – DATETIME.

Пример создания таблицы с разными типами:

CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50),
birth_date DATE,
salary DECIMAL(10, 2),
is_manager BOOLEAN,
working_hours TIME,
hire_date TIMESTAMP,
bio TEXT
);

Важно: размер имеет значение. VARCHAR(255) занимает меньше места, чем VARCHAR(1000), даже если в нём короткие строки. Это важно при оптимизации работы и ресурсов. Именно поэтому типов данных так много – под разные цели.